package Negocio;

import ManejoExc.EmpresaException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * @author Diego
 * @version 1.0
 * @created 28-sep-2013 21:38:45 p.m.
 */
public class Plantacion {
        private Integer idPlantacion;
        private String nombre;
        private String propietario;
        private String ubicacion;
        private Set<Parcela> parcelas;
        private boolean activa;
        
        //Constructores
	public Plantacion(){

	}

    public Plantacion(String unNombre,String propietario, String ubicacion) {
        this.nombre = unNombre;
        this.propietario = propietario;
        this.ubicacion = ubicacion;
        this.parcelas = new HashSet();
        this.activa = true;
        Empresa.persistencia.insert(this);
    }
                
        //Set & Get
    
        public Integer getIdPlantacion(){
        return idPlantacion;
        }

    public void setIdPlantacion(Integer idPlantacion) {
        this.idPlantacion = idPlantacion;
    }

    public boolean getActiva() {
        return activa;
    }

    public void setActiva(boolean activa) {
        this.activa = activa;
    }
    
        public String getNombre(){
        return nombre;
        }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    
        public void setPropietario(String unPropietario){
            this.propietario = unPropietario;
        }
        public void setUbicacion(String unaUbicacion){
            this.ubicacion = unaUbicacion;
        }
        public String getPropietario(){
            return this.propietario;
        }
        public String getUbicacion(){
            return this.ubicacion;
        }
        
        

    public Set<Parcela> getParcelas() {
        return parcelas;
    }

    public void setParcelas(Set<Parcela> parcelas) {
        this.parcelas = parcelas;
    }
    public boolean validarDatosPlantacion(String unNombre,String propietario) throws EmpresaException{
        boolean salida = true;
        if(unNombre.trim().equals("") || propietario.trim().equals("")){
            throw new EmpresaException ("Los campos no pueden estar vacios");
        }
     return salida;
    }
    public void actualizar(String unNombre,String propietario, String ubicacion) throws EmpresaException{
       if(this.validarDatosPlantacion(unNombre,propietario)){  
            this.nombre = unNombre;
            this.propietario = propietario;
            this.ubicacion = ubicacion;
            Empresa.persistencia.update(this);
       }
        
    }
        @Override
    public String toString(){
        return this.nombre;
    }
        
       public void agregarParcela(Parcela unaParcela){
           this.parcelas.add(unaParcela);
           Empresa.persistencia.update(this);
       }
       
       public boolean validarDatosParcela(int numero,String descripcion) throws EmpresaException{
           boolean salida = true;
           //vefifico que no exista el nro y que la descripcion no sea vacia
           if(descripcion.trim().equals("")){
               salida = false;
               throw new EmpresaException("El nro de Parcela ingresado, ya existe. Verifique");
           }
           Iterator it = this.getParcelas().iterator();
           while (it.hasNext() & salida){
               Parcela unaParcela =(Parcela) it.next();
               if(numero == unaParcela.getNroParcela()){
                   salida = false;
                   throw new EmpresaException("El nro de Parcela ingresado, ya existe. Verifique");
               }
           }
           
           return salida;
       }
       
       public boolean validarDatosParcela(Parcela miParcela,int numero,String descripcion) throws EmpresaException{
           boolean salida = true;
           //vefifico que no exista el nro y que la descripcion no sea vacia
          
           if(descripcion.trim().equals("")){
               salida = false;
               throw new EmpresaException("La descripcion no puede estar vacia");
           }
           Iterator it = this.getParcelas().iterator();
           while (it.hasNext() & salida){
               Parcela unaParcela =(Parcela) it.next();
               if(!unaParcela.equals(miParcela) & numero == unaParcela.getNroParcela()){
                   salida = false;
                   throw new EmpresaException("El nro de Parcela ingresado, ya existe. Verifique");
               }
           }
           
           return salida;
       }
              
              
       public void nuevaParcela(int numero,String descripcion) throws EmpresaException{
           if(this.validarDatosParcela(numero, descripcion)){
                this.agregarParcela(new Parcela(numero,descripcion));
           }
       }
       
       public void actualizarParcela(Parcela unaParcela ,int numero, String descripcion) throws EmpresaException{
           if(this.validarDatosParcela(unaParcela, numero, descripcion)){
                this.agregarParcela(new Parcela(numero,descripcion));
           }
       }
       public void deshabilitar(){
           this.activa = false;
           Empresa.persistencia.update(this);
       }
       public void quitarParcela(Parcela unaParcela){
           unaParcela.quitar();
           this.parcelas.remove(unaParcela);
           Empresa.persistencia.update(this);
       }
        
	//Metodos

}